package com.d3works.apps.account.service.moveline;

import com.d3works.apps.account.db.Move;
import com.d3works.apps.account.db.MoveLine;
import com.d3works.apps.account.db.Reconcile;
import com.d3works.exception.D3worksException;

public interface MoveLineTaxService {

  void autoTaxLineGenerate(Move move) throws D3worksException;

  MoveLine computeTaxAmount(MoveLine moveLine) throws D3worksException;

  MoveLine reverseTaxPaymentMoveLines(MoveLine customerMoveLine, Reconcile reconcile)
      throws D3worksException;

  MoveLine generateTaxPaymentMoveLineList(
      MoveLine customerPaymentMoveLine, MoveLine invoiceMoveLine, Reconcile reconcile)
      throws D3worksException;

  int getVatSystem(Move move, MoveLine moveline) throws D3worksException;

  void checkTaxMoveLines(Move move) throws D3worksException;
}
